import java.util.ArrayList;
import java.util.Collections;

/**
 * @ClassName DouDiZhu
 * @Description 按照斗地主规则，完成准备牌、洗牌、发牌、看牌的动作
 * 具体规则：
 * 使用54张牌打乱顺序，三个玩家参与游戏，三人交替摸牌，每人17张牌，最后3张留作底牌
 * @Author Li
 * @Date 2022/8/4 9:18
 * @ModifyDate 2022/8/4 9:18
 * @Version 1.0
 */
public class DouDiZhu {
    public static void main(String[] args) {
        // 1.准备牌
        ArrayList<String> poker = new ArrayList<>();
        // 特殊牌：大王、小王
        poker.add("大王");
        poker.add("小王");
        // 定义一个集合/数组，存储四种花色：♠、♥、♣、♦
        String[] colors = {"♠", "♥", "♣", "♦"};
        // 定义一个集合/数组，存储13个序号：2、A、K、Q、J、10、9、8、7、6、5、4、3
        String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
        /*
         循环嵌套遍历两个数组/集合，组装 52 张牌
         ♠2、♠A、♠K、♠Q...♠3  ♥2、♥A、♥K、♥Q...♥3
         ♣2、♣A、♣K、♣Q...♣3  ♦2、♦A、♦K、♦Q...♦3
         */
        for (String color : colors) {
            for (String number : numbers) {
                // System.out.println(color+number);
                poker.add(color + number);
            }
        }
        // System.out.println(poker);

        // 2.洗牌 static void shuffle(List<?> list)
        Collections.shuffle(poker);
        // System.out.println(poker);

        // 3.发牌
        ArrayList<String> player01 = new ArrayList<>();
        ArrayList<String> player02 = new ArrayList<>();
        ArrayList<String> player03 = new ArrayList<>();
        ArrayList<String> diPai = new ArrayList<>();
        for (int i = 0; i < poker.size(); i++) {
            String p = poker.get(i);
            if (i >= 51) { // 最后3张（索引 >= 51）作为底牌
                diPai.add(p);
            } else if (i % 3 == 0) { // 索引%3 == 0 的给玩家1
                player01.add(p);
            } else if (i % 3 == 1) { // 索引%3 == 1 的给玩家2
                player02.add(p);
            } else if (i % 3 == 2) { // 索引%3 == 2 的给玩家3
                player03.add(p);
            }
        }

        // 4.看牌
        System.out.println("周润发：" + player01);
        System.out.println("刘德华：" + player02);
        System.out.println("周星驰：" + player03);
        System.out.println("底牌：" + diPai);
    }
}
